﻿/**
 * @file PyFITKPhyscisPropGeneralLaminate.h
 * @brief 多层板物理属性 为python装饰器接口准备的封装类
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-03
 */
#ifndef _PY_PHYSICSPROP_GeneralLaminate_H___
#define _PY_PHYSICSPROP_GeneralLaminate_H___

#include <QString>
#include "FITKAcousticsPhysicsAPI.h"
#include "PyFITKPhyscisPropBase.h"

namespace Acoustics
{

    /**
     * @brief 多层板物理属性 为python装饰器接口准备的封装类
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-03
     */
    class FITKAcousticsPhysicsAPI PyFITKPhyscisPropGeneralLaminate : public PyFITKPhyscisPropBase
    {
    public:
        explicit PyFITKPhyscisPropGeneralLaminate(const QString& name);
        explicit PyFITKPhyscisPropGeneralLaminate() = default;
        virtual ~PyFITKPhyscisPropGeneralLaminate() = default;
        /**
         * @brief   添加层
         * @param[i] material:材料
         * @param[i] thickness:厚度
         * @param[i] angle: 角度
         * @param[i] DLFSpectra:频谱
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool addLayer(const QString& material, double thickness, double angle, const QString& DLFSpectra);
        /**
         * @brief   插入层
         * @param[i] num:插入层数
         * @param[i] material:材料
         * @param[i] thickness:厚度
         * @param[i] angle: 角度
         * @param[i] DLFSpectra:频谱
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool insertLayer(int num,const QString& material, double thickness, double angle, const QString& DLFSpectra);     
        /**
         * @brief   删除层
         * @param[i] num:删除层数
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool deleteLayer(int num);
        /**
         * @brief   获取层数, 获取失败返回-1
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        int getLayerCount();
        /**
         * @brief  创建物理属性
         * @param[i] name 名称
         * @author wangning (2185896382@qq.com)
         * @date   2024-12-3
         */
        bool createPhyscisProp(const QString& name);
    };
}
#endif
